home *** CD-ROM | disk | FTP | other *** search
/ Programming in Microsoft Windows with C# / Programacion en Microsoft Windows con C#.iso / Original Code / Pages and Transforms / SixInchRuler / SixInchRuler.cs next >
Encoding:
Text File  |  2001-01-15  |  1.8 KB  |  60 lines

  1. //-------------------------------------------
  2. // SixInchRuler.cs ⌐ 2001 by Charles Petzold
  3. //-------------------------------------------
  4. using System;
  5. using System.Drawing;
  6. using System.Windows.Forms;
  7.  
  8. class SixInchRuler: PrintableForm
  9. {
  10.      public new static void Main()
  11.      {
  12.           Application.Run(new SixInchRuler());
  13.      }
  14.      public SixInchRuler()
  15.      {
  16.           Text = "Six-Inch Ruler";
  17.      }
  18.      protected override void DoPage(Graphics grfx, Color clr, int cx, int cy)
  19.      {
  20.           Brush     brush   = new SolidBrush(clr);
  21.           Pen       pen     = new Pen(clr, 0.5f);
  22.           const int xOffset = 16;
  23.           const int yOffset = 16;
  24.  
  25.           grfx.PageUnit  = GraphicsUnit.Inch;
  26.           grfx.PageScale = 1 / 64f;
  27.           grfx.DrawRectangle(pen, xOffset, yOffset, 6 * 64, 64);
  28.  
  29.           StringFormat strfmt = new StringFormat();
  30.           strfmt.Alignment = StringAlignment.Center;
  31.  
  32.           for (int i = 1; i < 6 * 16; i++)
  33.           {
  34.                int x = xOffset + i * 4;
  35.                int y = yOffset;
  36.                int dy;
  37.  
  38.                if (i % 16 == 0)         // One-inch marks
  39.                {
  40.                     dy = 32;
  41.                     grfx.DrawString((i / 16).ToString(), Font, brush,
  42.                                                   x, y + dy, strfmt);
  43.                }
  44.                else if (i % 8 == 0)     // Half-inch marks
  45.                     dy = 24;
  46.  
  47.                else if (i % 4 == 0)     // Quarter-inch marks
  48.                     dy = 20;
  49.  
  50.                else if (i % 2 == 0)     // Eighth-inch marks
  51.                     dy = 16;
  52.  
  53.                else                     // Sixteeenth-inch marks
  54.                     dy = 12;
  55.  
  56.                grfx.DrawLine(pen, x, y, x, y + dy);
  57.           }
  58.      }
  59. }
  60.